home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / elf-fdpic.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  3KB  |  63 lines

  1. /* elf-fdpic.h: FDPIC ELF load map
  2.  *
  3.  * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
  4.  * Written by David Howells (dhowells@redhat.com)
  5.  *
  6.  * This program is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public License
  8.  * as published by the Free Software Foundation; either version
  9.  * 2 of the License, or (at your option) any later version.
  10.  */
  11.  
  12. #ifndef _LINUX_ELF_FDPIC_H
  13. #define _LINUX_ELF_FDPIC_H
  14.  
  15. #include <linux/elf.h>
  16.  
  17. #define PT_GNU_STACK    (PT_LOOS + 0x474e551)
  18.  
  19. /* segment mappings for ELF FDPIC libraries/executables/interpreters */
  20. struct elf32_fdpic_loadseg {
  21.     Elf32_Addr    addr;        /* core address to which mapped */
  22.     Elf32_Addr    p_vaddr;    /* VMA recorded in file */
  23.     Elf32_Word    p_memsz;    /* allocation size recorded in file */
  24. };
  25.  
  26. struct elf32_fdpic_loadmap {
  27.     Elf32_Half    version;    /* version of these structures, just in case... */
  28.     Elf32_Half    nsegs;        /* number of segments */
  29.     struct elf32_fdpic_loadseg segs[];
  30. };
  31.  
  32. #define ELF32_FDPIC_LOADMAP_VERSION    0x0000
  33.  
  34. /*
  35.  * binfmt binary parameters structure
  36.  */
  37. struct elf_fdpic_params {
  38.     struct elfhdr            hdr;        /* ref copy of ELF header */
  39.     struct elf_phdr            *phdrs;        /* ref copy of PT_PHDR table */
  40.     struct elf32_fdpic_loadmap    *loadmap;    /* loadmap to be passed to userspace */
  41.     unsigned long            elfhdr_addr;    /* mapped ELF header user address */
  42.     unsigned long            ph_addr;    /* mapped PT_PHDR user address */
  43.     unsigned long            map_addr;    /* mapped loadmap user address */
  44.     unsigned long            entry_addr;    /* mapped entry user address */
  45.     unsigned long            stack_size;    /* stack size requested (PT_GNU_STACK) */
  46.     unsigned long            dynamic_addr;    /* mapped PT_DYNAMIC user address */
  47.     unsigned long            load_addr;    /* user address at which to map binary */
  48.     unsigned long            flags;
  49. #define ELF_FDPIC_FLAG_ARRANGEMENT    0x0000000f    /* PT_LOAD arrangement flags */
  50. #define ELF_FDPIC_FLAG_INDEPENDENT    0x00000000    /* PT_LOADs can be put anywhere */
  51. #define ELF_FDPIC_FLAG_HONOURVADDR    0x00000001    /* PT_LOAD.vaddr must be honoured */
  52. #define ELF_FDPIC_FLAG_CONSTDISP    0x00000002    /* PT_LOADs require constant
  53.                              * displacement */
  54. #define ELF_FDPIC_FLAG_CONTIGUOUS    0x00000003    /* PT_LOADs should be contiguous */
  55. #define ELF_FDPIC_FLAG_EXEC_STACK    0x00000010    /* T if stack to be executable */
  56. #define ELF_FDPIC_FLAG_NOEXEC_STACK    0x00000020    /* T if stack not to be executable */
  57. #define ELF_FDPIC_FLAG_EXECUTABLE    0x00000040    /* T if this object is the executable */
  58. #define ELF_FDPIC_FLAG_PRESENT        0x80000000    /* T if this object is present */
  59. };
  60.  
  61.  
  62. #endif /* _LINUX_ELF_FDPIC_H */
  63.